package ejemplo.componentes;

import java.awt.Rectangle;

import ejemplo.componentes.interfaces.IColisionable;
import ejemplo.util.UtilidadColision;
import ejemplo.util.Vector2D;
import es.componentes.Componente;
import es.entidades.Entidad;
/**
 * Componente que se encarga de las colisiones.
 * @author Miguel Vicente
 */
public class ComponenteColision extends Componente implements IColisionable {
	
	private int forma;
	private ComponentePosicion2D posicion;
	private ComponenteRender render;
	/**
	 * 
	 * @param forma {@code IFormaColisionable.RECTANGULAR} o {@code IFormaColisionable.CIRCULAR}
	 * @param posicion Posicion de la entidad a la que pertenece este componente
	 * @param render Render de la entidad a la que pertenece este componente
	 * @param entidad Entidad a la que pertenece este componente
	 */
	public ComponenteColision(int forma, ComponentePosicion2D posicion, ComponenteRender render, Entidad entidad) {
		super(entidad);
		this.forma = forma;
		this.posicion = posicion;
		this.render = render;
	}

	@Override
	public String getTipo() {
		return IColisionable.ID_INTERFAZ;
	}

	@Override
	public boolean comprobarSiHayColision(IColisionable c) {
		Vector2D penetracion = UtilidadColision.getPenetracion(this, c);;
		if (penetracion.getX() != 0 || penetracion.getY() != 0) {
			return true;
		}
		return false;
	}

	@Override
	public Vector2D getPenetracionColision(IColisionable c) {
		return UtilidadColision.getPenetracion(this, c);
	}

	@Override
	public void corregirColisionX(IColisionable c) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void corregirColisionY(IColisionable c) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Rectangle getBounds() {
		return new Rectangle((int) posicion.getX(), (int) posicion.getY(), render.getAncho(), render.getAlto());
	}

	@Override
	public int getTipoForma() {
		return forma;
	}
	
	
	
}
